vsftpd es un servidor ftp muy liviano que casi no ocupa recursos, y eso lo hace ideal para su utilización en aparatos como el nuestro. Su configuración es sencilla en comparación con otros y por defecto funciona de forma muy segura; por algo es el servidor FTP que traen por defecto muchas distros de linux. ¿Para qué queremos esto? Pues sencillo, para tener una funcionalidad similar a NAS pero mucho más rápida y accesible desde fuera de nuestra red local. Funciona en los Blusens T50 y en los EMTEC Q800, aunque es muy probable que funcione también en cualquiera de los muchísimos clones del mismo aparato (Ellion, Woxter, BestBuy, O2, etc). Lo bueno es que no hay ninguna posibilidad de cargarse nada pues no toca en absoluto el firmware del aparato. Con apagar, encender y borrar los ficheros de la partición principal se deja el CUBO como estaba.
Instalación del chroot en Debian
Para ello, seguid el siguiente post:
https://www.mundodvd.com/showthread....24#post1485724
Ni que decir tiene que si ya tenéis instalado el Debian por algún otro motivo, no es necesario reinstalarlo.
Instalación de vsftpd 2.2.2-1 con soporte SSL
Para un dispositivo como el CUBO, lo suyo es instalar programas que funcionen como demonio porque no disponemos de pantalla. Vamos a instalar el paquete vsftpd, que actualmente viene en la versión 2.2.2-1 en la distribución inestable. Hay versiones anteriores en las distribuciones testing y estable, pero yo he probado satisfactoriamente la versión que propongo.
Para la instalación de este programa, no es necesario preinstalar ningún paquete de la distribución estable (como ocurría en la instalación de transmission).
Montamos el chroot (el símbolo de comando sera sh-3.1#) y ejecutamos:
- Para editar el contenido, debéis pulsar la tecla 'i'. Aparecerá en la parte inferior izquierda la palabra 'INSERT' que nos indica que estamos en modo edición.vim /etc/apt/sources.list
- Para guardar los cambios, pulsáis ESC para salir del modo edición (desaparecerá la palabra INSERT de la parte inferior izquierda), tecleáis :wq y pulsáis ENTER. Con esto guardaremos los cambios y saldremos. Dará un error de escritura de no se que, pero no le hagáis caso, con dar a ENTER volveréis al símbolo de comando.
Las lineas con el carácter # al comienzo se llaman 'lineas comentadas' y no son leídas por aptitude. Debemos cerciorarnos de que las dos últimas están sin comentar (distribución inestable), y que las cuatro primeras si que están comentadas (distribuciones estable y testing).
Ahora ejecutamos...
...para actualizar las listas de paquetes.aptitude update
Para instalar todos los paquetes necesarios ejecutad...
Cuando diga...aptitude install libpam0g libssl0.9.8 vsftpd openssl ssl-cert
... darle al ENTER para comenzar la instalación, ya que al estar la 'Y' en mayúscula indica que es la opción por defecto.x packages upgraded, x newly installed, 0 to remove and xxx not upgraded.
Need to get xxxxkB of archives. After unpacking xx.xMB will be used.
Do you want to continue? [Y/n/?]
En unos minutillos (pocos) estará todo instalado y solo faltara configurar el sistema. A lo mejor en algún momento solicita que demos confirmación para reiniciar ciertos procesos, ante lo cual basta con dar al ENTER.
Actualización de vsftpd a la versión 2.2.2-1
En caso de que tengáis una versión anterior ya instalada, actualizar a la nueva versión es muy sencillo.
Montamos el chroot (el símbolo de comando sera sh-3.1#) y ejecutamos:
- Para editar el contenido, debéis pulsar la tecla 'i'. Aparecerá en la parte inferior izquierda la palabra 'INSERT' que nos indica que estamos en modo edición.vim /etc/apt/sources.list
- Para guardar los cambios, pulsáis ESC para salir del modo edición (desaparecerá la palabra INSERT de la parte inferior izquierda), tecleáis :wq y pulsáis ENTER. Con esto guardaremos los cambios y saldremos. Dará un error de escritura de no se que, pero no le hagáis caso, con dar a ENTER volveréis al símbolo de comando.
Las lineas con el carácter # al comienzo se llaman 'lineas comentadas' y no son leídas por aptitude. Debemos cerciorarnos de que las dos últimas están sin comentar (distribución inestable), y que las cuatro primeras si que están comentadas (distribuciones estable y testing).
Ahora ejecutamos...
...para actualizar las listas de paquetes.aptitude update
Para actualizar todos los paquetes necesarios ejecutad...
Cuando diga...aptitude install libpam0g libssl0.9.8 vsftpd openssl ssl-cert
... darle al ENTER para comenzar la instalación, ya que al estar la 'Y' en mayúscula indica que es la opción por defecto.x packages upgraded, x newly installed, x to remove and xxx not upgraded.
Need to get xxxxkB of archives. After unpacking xx.xMB will be used.
Do you want to continue? [Y/n/?]
En un momento dado os aparecerá lo siguiente...
... a lo que pulsaréis ENTER para conservar el fichero de configuración.Configuration file `/etc/vsftpd.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : background this process to examine the situation
The default action is to keep your current version.
*** vsftpd.conf (Y/I/N/O/D/Z) [default=N] ?
Configuración básica de vsftpd con soporte SSL
Cuando termine de instalarse ejecutáis...
...para detener el demonio y poder comenzar con la configuración./etc/init.d/vsftpd stop
Primero vamos a crear el usuario que vamos a utilizar para conectarnos al servidor ftp. Ejecutad...
... y en vez de usuario ponéis el nombre que queráis para vuestro usuario.useradd -g ftp -d /mnt -c " Usuario " usuario
En caso de que os de el siguiente error...
... tenéis que crear primero el grupo ftp. Para ellos ejecutad...useradd: unknown group ftp
... y os saldrá una lista con todos los grupos existentes. Cada grupo lleva asociado un número (GID). Los hay con GID entre 0 y 100, GID ciento y algo, y GID mil y algo.cat /etc/group
Justo al final, estarán los últimos creados. Os tenéis que fijar en el último grupo con GID ciento algo... si por ejemplo, el último es...
...tendríais que crear el grupo ftp a continuación de la siguiente manera...grupo:x:107
Acto seguido ejecutáis...groupadd -g 108 ftp
... de nuevo con el usuario que hayáis elegido para establecer su contraseña. Os pedira la nueva contraseña y la confirmación. Aunque no aparezcan caracteres al escribir, no os preocupéis.passwd usuario
Ahora tenemos que crear una shell ficticia para nuestro nuevo usuario...
... y editar el fichero /etc/shells...mkdir /bin/ftp
... para añadir al final del fichero una línea...vim /etc/shells
La forma de utilizar el editor ya os la he explicado más arriba....
/bin/ftp
Ahora editamos el fichero passwd...
...pero esta vez buscamos el nuevo usuario (que estará en la última línea) y modificamos el final de la línea para que en vez de /bin/sh ponga nuestra nueva shell ficticia, /bin/ftp .vim /etc/passwd
Ahora editamos el fichero de configuración del vsftpd...
Tenéis que buscar las siguientes líneas y cerciorarse de que estan sin comentar (sin # delante) y de que tienen el valor que os indico:vim /etc/vsftpd.conf
La siguiente línea (que está al final) debe estar comentada poniendo la # delante...listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=000
ftpd_banner=El mensaje que os de la gana poner...
chroot_list_enable=YES
Por último, añadimos al final las siguiente líneas...#rsa_cert_file=/etc/ssl/private/vsftpd.pem
Una vez hecho todo lo anterior, guardamos los cambios.ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_ciphers=DES-CBC3-SHA
force_local_logins_ssl=YES
force_local_data_ssl=YES
rsa_cert_file=/etc/ssl/vsftpd.pem
rsa_private_key_file=/etc/ssl/vsftpd.key
pasv_min_port=2000
pasv_max_port=2100
file_open_mode=0777
Esta configuración fuerza la encriptación SSL, por lo que vamos a hacer una copia en la que lo indique...
Ahora editamos de nuevo el fichero de configuración del vsftpd para generar la opción que no fuerce SSL...cp /etc/vsftpd.conf /etc/vsftpd.conf.sslon
Tenéis que buscar las siguientes líneas...vim /etc/vsftpd.conf
..., cambiar su valor a NO...force_local_logins_ssl=YES
force_local_data_ssl=YES
... y guardar los cambios.force_local_logins_ssl=NO
force_local_data_ssl=NO
Esta configuración no fuerza la encriptación SSL, por lo que vamos a hacer una copia en la que lo indique...
Ahora tenemos que crear un fichero con nuestro usuario de la siguiente manera...cp /etc/vsftpd.conf /etc/vsftpd.conf.ssloff
...y le añadimos una línea que contenca el nombre de usuario que hemos escogido.vim /etc/vsftpd.chroot_list
Ahora toca generar el certificado RSA necesario para la encriptación SSL...
... y aparecera lo siguiente, donde tendremos que ir introduciendo diferentes cosas que nos solicite... yo he puesto en el ejemplo posibles valores pero que cada uno ponga lo que quiera. No os preocupéis demasiado de la 'palabra' ya que luego la vamos a deshabilitar. Si en algún campo ponéis un punto '.' dejará el campo en blanco.cd /etc/ssl/
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout vsftpd.key -out vsftpd.pem
Una vez terminado, comprobamos que se han generado tanto la llave privada como el certificado...Generating a 1024 bit RSA private key
...............................++++++
..........++++++
Enter PEM pass phrase: palabra
Verifying - Enter PEM pass phrase: palabra
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Madrid
Locality Name (eg, city) []:Madrid
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Restaurante El Chiflo
Organizational Unit Name (eg, section) []:Marketing
Common Name (eg, YOUR name) []:Usuario
Email Address []:chiflo.restauracion@midominio.com
... y os aparecerá la información de la llave y del certificado. Si os fijáis en la información del certificado, pone que su validéz comienza justo en el momento que habéis hecho el certificado pero considerando la hora como UTC. ¿Que pasa con esto? Pues que aquí en España, que en verano estamos en GMT+2, el certificado será válido dos horas después de la fecha de creación.openssl x509 -in /etc/ssl/vsftpd.pem -noout -text
Para que solo root pueda acceder a él le cambiamos los permisos...
... y por último eliminamos la contraseña para que podamos ejecutar el servidor sin tener que meter la dichosa 'palabra'.chmod 600 vsftpd.pem
Os pedirá la frase de paso 'Enter PEM pass phrase:' tenemos que poner 'palabra' o lo que sea que hayáis puesto al generar el certificado.cp vsftpd.key vsftpd.key.bak
openssl rsa -in vsftpd.key.bak -out vsftpd.key
Con todo lo anterior ya tenemos correctamente configurado vsftpd tanto para usar SSL como para no usarlo.
Para poder arrancar y detener vsftpd en cualquiera de las dos modalidades de forma sencilla he creado unos script que os podéis bajar de aquí:
http://rapidshare.com/files/274415542/VSFTPD.rar
Tenéis que editar los ficheros .txt y colocar la dirección IP de vuestro CUBO en la primera línea.
Para montar la imagen Debian, ejecutad 'debian.bat', y para desmontarla 'undebian.bat'. Si por ejemplo tenéis funcionando Transmission, no es necesario montar Debian porque ya está montado, por lo que solo tendréis que arrancar el servidor. Para arrancar el servidor sin forzar la encriptación SSL ejecutad 'vsftpd_on.bat', para arrancarlo con SLL forzado ejecutad 'vsftpd_ssl_on.bat' y para detenerlo 'vsftp_off.bat'.
Además de los script que os he explicado, también incluyo uno llamado 'permisos.bat' que modificará los permisos de todos los archivos de vuestras particiones para poder tener acceso de lectura/escritura desde el cliente ftp. Esto es necesario si os da error al tratar de leer o modificar algún archivo por culpa de los permisos.
Por si los ficheros no os funcionan, o simplemente habéis utilizado carpetas diferentes, os adjunto las órdenes para arrancar y parar vsftpd (desde el chroot, sh-3.1#).
Para arrancarlo:
Para detenerlo:/etc/init.d/vsftpd start
Tened en cuenta que de esta forma arrancaréis vsftpd en el modo (con SSL forzado o voluntario) que utilizásteis la última vez./etc/init.d/vsftpd stop
Para ponerlo en modo con SSL forzado:
Para ponerlo en modo con SSL voluntario:cp /etc/vsftpd.conf.sslon /etc/vsftpd.conf
Para que el cambio de modo surta efecto, debeís detener y reiniciar el servidor.cp /etc/vsftpd.conf.ssloff /etc/vsftpd.conf
Personalmente recomiendo utilizado el modo sin forzar SSL. De esta forma elegimos desde el cliente FTP cómo queremos realizar la conexión, si encriptada o no. Con el modo forzado SIEMPRE exigirá que la conexión sea cifrada.
Apertura de puertos del router
Es probable que tengáis intención de acceder a vuestro ficheros desde fuera de vuestra red local. Lo lógico es que tengáis conectado vuestro CUBO a internet a través de un router. En ese caso, hay que mapear ciertos puertos en el router hacia vuestro CUBO para que podáis conectaros al servidor.
Para empezar recomiendo encarecidamente que vuestro CUBO tenga una IP fija, ya que si es automática asignada por DHCP en muchos casos vuestro router no os permitirá abrir los puertos hacia esa dirección.
Una vez nuestro CUBO tiene IP Fija, tenemos que abrir:
- el puerto 21 para TCP. (conexión de control)
- los puertos del 2000 al 2100 para TCP. (conexiones de datos)
Si habéis modificado los valores 2000 y 2100 en el vsftpd.conf, tenedlo en cuenta a la hora de abrir los puertos.
La forma de abrir los puertos de vuestro router especifico no es el tema de discusión y os agradecería que no contestéis al post con preguntas relativas a ese tema. Si necesitáis ayuda para abrir puertos, mirad en http://www.adslzone.net/.
Instalación del cliente FTP: Filezilla
En principio para conectarse a una ftp basta el propio navegador web (como Firefox o Internet Explorer), pero su funcionalidad es muy limitada. Por otra parte, al utilizar la encriptación SSL, el tema se complica, y es preferible utilizar un cliente FTP.
Por esa razón os recomiendo que os bajéis Filezilla, que es un cliente FTP de software libre que funciona estupendamente, y además, os explico como configurarlo.
Podéis bajároslo para multitud de sistemas operativos de aquí:
http://filezilla-project.org/download.php
Una vez instalado en vuestro equipo, es muy sencilla su utilización.
Primero tendréis que añadir el servidor, en este caso, nuestro CUBO. Para ello entráis en el Gestor de Sitios, en Archivo -> Gestor de Sitios..., pulsando Ctrl + S o directamente pinchando en el primer icono.
Vamos a generar dos servidores, uno que utilice SSL y otro que no. Comenzamos con el que no utiliza SSL.
Pincháis en el botón 'Nuevo sitio' y ponedle el nombre que os parezca oportuno, yo en mi caso lo he llamado T50. Los datos que tenéis que poner son:
** Pestaña General:
- Servidor: la IP de vuestro CUBO. Si os conectáis desde dentro de vuestra red local, pues la IP del CUBO. Si os conectáis desde fuera de vuestra red local, tenéis que poner la IP pública de vuestro router. Si vuestra IP pública es fija, estupendo, pero si es dinámica, de vez en cuando os tocará cambiarla. Para evitar esto, podéis crearos una DNS dinámica para que sea más sencillo conectaros a vuestro servidor ftp, o vuestro transmission, etc. Para más información al respecto, he creado un post donde explico como crearos una en www.dyndns.com y como instalar ddclient, una pequeña aplicación que autoactualice la IP en vuestra DNS. https://www.mundodvd.com/showthread....67#post1540467.
- Puerto: 21, aunque si lo dejáis en blanco funcionará también, ya que es el puerto por defecto.
- Tipo de servidor: FTP
- Modo de acceso: Normal
- Usuario: El usuario que habéis creado antes.
- Contraseña: La constraseña del usuario.
** Pestaña Avanzado:
- Adjust server timezone offset: -2 horas con horario de verano, -1 horas con horario de invierno. Lamentablemente nuestro cubo funciona asignando la hora tanto al reloj de sistema como al reloj hardware, independientemente de la zona horaria que configuréis. ¿Que pasa con esto? Que si tenemos el CUBO con la hora correcta para poder grabar cosas del TDT, etc... la almacena como hora UTC (en vez de GMT+1 o GMT+2), y clientes como filezilla le suman 1 o 2 horas dependiendo del día del año en que estemos, ya que aquí en Madrid en verano es GMT+2 y en invierno GMT+1. Por tanto, si queréis ver la hora correcta de los ficheros de vuestro CUBO, tenéis que ajustar este valor en Filezilla. Si no lo ajustáis, no pasa nada, simplemente los ficheros se verán con una hora erronea, pero la hora estará correctamente almacenada en el CUBO.
Una vez hecho esto, le dáis al botón 'Copiar' para generar otro servidor, y lo llamáis igual pero añadiendo SSL al final. Lo único que teneis que cambiar es lo siguiente:
** Pestaña General:
- Tipo de servidor: FTPES
Para terminar pulsais el botón 'Aceptar' y con esto se guardarán los dos servidores que habéis definido.
Ahora, para conectaros a vuestro CUBO, lo podéis hacer a través del gestor de sitios, o pinchando en el triángulo negro que hay junto al icono y seleccionando uno de los dos servidores que acabáis de definir.
La primera vez que os conectéis con la versión SSL os dará un mensaje de 'Certificado desconocido' y aparecerá toda la información que rellenásteis al crear el certificado. Lo suyo es marcar la casilla 'Siempre confiar en el certificado en futuras sesiones' y pulsar 'Aceptar', pero por lo que he explicado antes de las horas, nada más crear el certificado no será válido hasta que pasen 1 o 2 horas por el desajuste horario, y la casilla aparecerá sombreada. No os preocupéis, dadle a 'Aceptar' y la próxima vez que os conectéis ya podréis seleccionar la casilla para confiar siempre en el certificado y evitar que os pregunte cada vez.
Con esto ya podréis conectaros sin problemas y navegar por las carpetas de vuestras particiones HDD1 y HDD2.
Limitaciones de uso con FAT32
Las particiones FAT32 admiten un tamaño máximo de archivo de 4Gb, por lo que, si utilizáis la partición FAT32 como destino de archivos, no podréis guardar cosas de más de 4Gb.
La idea de utilizar la partición NTFS no es mala en principio, pero es muy probable que os de problemas. A mi me los ha dado tanto con MLDonkey como con aMule.
Mi recomendación es que convirtáis la partición FAT32 a ext3 (para romper con la limitación de tamaño máximo), y ya de paso, eliminar la partición NTFS (que ya no hace falta). Todo viene muy bien explicado en el siguiente tutorial:
https://www.mundodvd.com/t50-q800-pasar-las-2-particiones-a-ext3-63116/
El único inconveniente de todo esto es que la funcionalidad de enlaces simbólicos que tienen las particiones ext3 no funcionan con ftp. Dichos enlaces aparecerán como ficheros y no podremos ver el contenido de los mismos.
Conclusiones
El uso de FTP le da cien patadas a NAS, por velocidad y por funcionalidad, además de permitirnos gestionar nuestros ficheros desde fuera de la red local.
La conexión sin SSL permite velocidades mucho más altas que la versión encriptada. En mi casa, a través de la red local, sin SSL bajo ficheros al PC a unos 3,5 Mb/s, mientras que con el SSL activado no bajan a más de 300 Kb/s; el SSL trabaja más de 10 veces más lento en conexiones rápidas ya que nos limita la CPU del CUBO. Sin embargo, desde el trabajo, la velocidad de descarga es a unos 15 KB/s con o sin SSL, por lo que a esta velocidad (limitada por la propia red) la CPU del CUBO no se satura.
¿Por qué utilizar SSL? Pues porque la información de usuario y contraseña de FTP se envía en claro (sin encriptar) y corremos el riesgo de que alguien obtenga nuestros datos y acceda a nuestro servidor. Mi recomendación es que utilicéis SSL si os conectáis desde fuera de vuestra red local, o si lo hacéis por WiFi y sospecháis que os espían la red.
Probad y comentad, por favor.
Un saludo!